import UIKit

/**
    B站：https://www.bilibili.com/video/BV144411C7Gg?p=39

    第39课
        1. 普通初始化器
        2. 可失败的初始化器
 */

// 普通初始化器
class Test {
    var name: String
    init(name: String) {
        self.name = name
    }
}

let t = Test(name: "hello")
print(t.name)

// 可失败的初始化器
class Test2 {
    var name: String
    init?(name: String) {
        if (name == "unknow") {
            return nil
        }
        self.name = name
    }
}
let t2 = Test2(name: "unknow") // 可切换方便 被注释掉了
//let t2 = Test2(name: "world") // 可切换方便 被注释掉了
// 可选类型 - 处理 1
if (t2 == nil) {
    print("11 t2 初始化失败")
//    print(t2?.name ?? "11 __unknow__")
} else {
    print(t2!.name)
}

// 可选类型 - 处理 2
if let p = t2 {
    print(p.name)
} else {
    print("22 t2 初始化失败")
//    print(t2?.name ?? "22 __unknow__")
}
